package com.hqyj.controller;


import com.hqyj.pojo.Kaoqing;
import com.hqyj.pojo.Timestandard;
import com.hqyj.service.IKaoqingService;
import com.hqyj.service.ITimestandardService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

/**
 * <p>
 * 考情表 前端控制器
 * </p>
 *
 * @author rock
 * @since 2021-11-18
 */
@RestController
@RequestMapping("/kaoqing")
public class KaoqingController {

    @Autowired
    IKaoqingService kaoqingService;

    @Autowired
    ITimestandardService timestandardService;

    @RequestMapping("/SignIn")
    public HashMap<String,Object> SignIn(Kaoqing kaoqing, Integer sysId){
        kaoqing.setSysId(sysId);
        //获取签到时间
        Date date = new Date();
        System.out.println("date" + date);

        //HH为24小时，hh为12小时
        //获取签到时间点
        String time = new SimpleDateFormat("HH:mm:ss").format(date);

        //获取具体签到为哪一天
        String day = new SimpleDateFormat("yyyy-MM-dd").format(date);
        kaoqing.setTimes(date);

        //查询上班时间
        HashMap<String, Object> ts = timestandardService.select();
        List<Timestandard> list = (List<Timestandard>) ts.get("list");
        Date startTime = list.get(0).getStartTime();
        String sts = new SimpleDateFormat("HH:mm:ss").format(startTime);

        //判断当天签到时间是否晚于上班时间
        // int a1.compareTo(a2)：返回为正数表示a1>a2
        //定义是否迟到
        int flag = 0;//1表示迟到，0没迟到
        //打卡时间与上班时间比较
        flag = time.compareTo(sts) >= 0 ? 1:0;
        //0表示签到,1签退
        kaoqing.setKaoqingType(0);
        kaoqing.setKaoqingState(flag);

        //查询用户当天是否签到，如果没有则增加签到数据
        HashMap<String,Object> Map = kaoqingService.queryByUserIdAndDate(sysId,day);
        if (Map.size()>0){
            return Map;
        }

        //增加签到数据
        HashMap<String,Object> map = kaoqingService.add(kaoqing);
        if(flag == 1){
            map.put("info","你已迟到，请尽快到岗！");
        }else{
            map.put("info","已成功签到！");
        }
        return map;
    }

    @RequestMapping("SignOut")
    public HashMap<String, Object> SignOut(Kaoqing kaoqing, Integer sysId){
        kaoqing.setSysId(sysId);
        //获取现在时间，签退时间
        Date date = new Date();

        //获取签退时间点
        String time = new SimpleDateFormat("HH:mm:ss").format(date);

        //获取签退具体天数
        String day = new SimpleDateFormat("yyyy-MM-dd").format(date);
        kaoqing.setTimes(date);

        //查出设定的下班时间
        HashMap<String, Object> ts = timestandardService.select();
        List<Timestandard> list = (List<Timestandard>) ts.get("list");
        Date endTime = list.get(0).getEndTime();
        String ets = new SimpleDateFormat("HH:mm:ss").format(endTime);

        //判断签退时间是否早于下班时间
        int flag = 0; //0表示正常下班，2表示早退
        flag = time.compareTo(ets) <=0 ? 2:0;
        kaoqing.setKaoqingState(flag);

        //0表示签到,1签退
        kaoqing.setKaoqingType(1);
        Integer kaoqingType = kaoqing.getKaoqingType();

        //查询用户当天是否签退，没有签退则增加数据
        HashMap<String, Object> Map = kaoqingService.querySignOut(sysId, day, kaoqingType);
        if(Map.size()>0){
            return Map;
        }

        //增加签退数据
        HashMap<String, Object> map = kaoqingService.add(kaoqing);

        //判断下班时间是否正常，给出提示
        if(flag !=0){
            map.put("info","当前非下班时间，你已早退！");
        }else{
            map.put("info","已成功签退！");
        }
        return map;
    }
}

